package com.asgow.ciel.tasks;
import java.util.LinkedList;
import com.asgow.ciel.references.Reference;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import com.google.gson.JsonPrimitive;
public class FirstClassJavaTaskInformation implements TaskInformation {
private final String className;
private final Reference objectRef;
private final LinkedList<Reference> dependencies;
private final Reference[] jarLib;
private final String[] args;
private final int numOutputs;
public FirstClassJavaTaskInformation(Class<? extends FirstClassJavaTask> clazz, Reference[] jarLib, String[] args, int numOutputs) {
this.className = clazz.getName();
this.objectRef = null;
this.jarLib = jarLib;
this.args = args;
this.numOutputs = numOutputs;
this.dependencies = new LinkedList<Reference>();
}
public FirstClassJavaTaskInformation(Reference objectRef, Reference[] jarLib, String[] args, int numOutputs) {
this.className = null;
this.objectRef = objectRef;
this.jarLib = jarLib;
this.args = args;
this.numOutputs = numOutputs;
this.dependencies = new LinkedList<Reference>();
}
public FirstClassJavaTaskInformation(Reference objectRef, Reference[] jarLib, String[] args) {
this(objectRef, jarLib, args, -1);
}
public void addDependency(Reference ref) {
this.dependencies.add(ref);
}
public JsonObject toJson() {
JsonObject ret = new JsonObject();
ret.add("executor_name", new JsonPrimitive("java2"));
if (this.numOutputs > 0) {
ret.add("n_outputs", new JsonPrimitive(this.numOutputs));
}
if (this.className != null) {
ret.add("class_name", new JsonPrimitive(this.className));
} else if (this.objectRef != null) {
ret.add("object_ref", this.objectRef.toJson());
} else {
assert false;
}
JsonArray jsonJarLib = new JsonArray();
for (Reference jarRef : this.jarLib) {
jsonJarLib.add(jarRef.toJson());
}
ret.add("jar_lib", jsonJarLib);
JsonArray jsonDependencies = new JsonArray();
for (Reference depRef : this.dependencies) {
jsonDependencies.add(depRef.toJson());
}
ret.add("extra_dependencies", jsonDependencies);
if (this.args != null) {
JsonArray jsonArgs = new JsonArray();
for (String arg : args) {
jsonArgs.add(new JsonPrimitive(arg));
}
ret.add("args", jsonArgs);
}
return ret;
}
}